package middleware

import (
	"github.com/gin-contrib/sessions"
	"github.com/gin-gonic/gin"
	"net/http"
	"strings"
	"testGin/model/core"
	"testGin/model/mysql"
	"testGin/model/tool"
)

func CheckNode(r *gin.Engine) gin.HandlerFunc {

	return func(c *gin.Context) {
		//获取当前路径
		var path string = c.FullPath()
		//跳首页
		if path == "/" {
			//http 重定向 支持 内部 和外部  链接 重定向http
			//301 旧地址A的资源已经被永久地移除了（这个资源不可访问了）
			//302 旧地址A的资源还在（仍然可以访问）
			c.Redirect(http.StatusMovedPermanently, "/system/index/login")

		}

		path = strings.Replace(path, "/", "", 1)
		if path == "" {
			tool.Error(c, 0, "请求地址不存在")
            return
		}

		res, _ := mysql.Node{}.GetItem(path)
		if strings.ToUpper(res.Method) != c.Request.Method {
			tool.Error(c, 0, "请求方式错误")
			return
		}
		//验证登录
		if res.Islogin == 1 {
			session := sessions.Default(c)
			token :=session.Get("token");

			if token!=nil {
				if(!core.Cuser{}.CheckLogin(c,token.(string))){
					c.Redirect(http.StatusMovedPermanently, "/system/index/login")
				}
			}else{
				c.Redirect(http.StatusMovedPermanently, "/system/index/login")
			}
		}
		c.Next()
	}
}